package com.dosen.api.third.party.cmp.model;

import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.annotation.JSONField;
import com.dosen.api.common.util.information.JSONUtil;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @version V1.0
 * @author: guangcheng
 * @date: 2023/1/12 12:25
 * @description:
 */
@NoArgsConstructor
@Data
public class CloudPlatform {

    /**
     * gmtCreate
     */
    @JSONField(name = "gmtCreate")
    public String gmtCreate;
    /**
     * gmtModify
     */
    @JSONField(name = "gmtModify")
    public String gmtModify;
    /**
     * creatorId
     */
    @JSONField(name = "creatorId")
    public Integer creatorId;
    /**
     * ownerId
     */
    @JSONField(name = "ownerId")
    public Object ownerId;
    /**
     * menderId
     */
    @JSONField(name = "menderId")
    public Integer menderId;
    /**
     * name
     */
    @JSONField(name = "name")
    public String name;
    /**
     * status
     */
    @JSONField(name = "status")
    public String status;
    /**
     * deleted
     */
    @JSONField(name = "deleted")
    public Boolean deleted;
    /**
     * props
     */
    @JSONField(name = "props")
    public Object props;
    /**
     * remark
     */
    @JSONField(name = "remark")
    public Object remark;
    /**
     * id
     */
    @JSONField(name = "id")
    public Integer id;
    /**
     * type
     */
    @JSONField(name = "type")
    public String type;
    /**
     * envId
     */
    @JSONField(name = "envId")
    public Object envId;
    /**
     * uuid
     */
    @JSONField(name = "uuid")
    public String uuid;
    /**
     * guid
     */
    @JSONField(name = "guid")
    public String guid;
    /**
     * isAlarm
     */
    @JSONField(name = "isAlarm")
    public Object isAlarm;
    /**
     * isPublic
     */
    @JSONField(name = "isPublic")
    public Boolean isPublic;
    /**
     * syncCron
     */
    @JSONField(name = "syncCron")
    public String syncCron;
    /**
     * dcId
     */
    @JSONField(name = "dcId")
    public Integer dcId;
    /**
     * version
     */
    @JSONField(name = "version")
    public String version;
    /**
     * logo
     */
    @JSONField(name = "logo")
    public String logo;
    /**
     * vendorCategory
     */
    @JSONField(name = "vendorCategory")
    public String vendorCategory;
    /**
     * authentication
     */
    @JSONField(name = "authentication")
    public String authentication;
    /**
     * region
     */
    @JSONField(name = "region")
    public Object region;
    /**
     * availablitiyZone
     */
    @JSONField(name = "availablitiyZone")
    public Object availablitiyZone;
    /**
     * location
     */
    @JSONField(name = "location")
    public Object location;
    /**
     * supplier
     */
    @JSONField(name = "supplier")
    public Object supplier;
    /**
     * dockerAddress
     */
    @JSONField(name = "dockerAddress")
    public Object dockerAddress;
    /**
     * remoteSite
     */
    @JSONField(name = "remoteSite")
    public Object remoteSite;
    /**
     * deployUrl
     */
    @JSONField(name = "deployUrl")
    public Object deployUrl;
    /**
     * deployUsername
     */
    @JSONField(name = "deployUsername")
    public Object deployUsername;
    /**
     * deployPassword
     */
    @JSONField(name = "deployPassword")
    public Object deployPassword;
    /**
     * harborId
     */
    @JSONField(name = "harborId")
    public Object harborId;
    /**
     * harborName
     */
    @JSONField(name = "harborName")
    public Object harborName;
    /**
     * regionsName
     */
    @JSONField(name = "regionsName")
    public Object regionsName;
    /**
     * servers
     */
    @JSONField(name = "servers")
    public Object servers;
    /**
     * envName
     */
    @JSONField(name = "envName")
    public Object envName;
    /**
     * dcName
     */
    @JSONField(name = "dcName")
    public String dcName;
    /**
     * instance
     */
    @JSONField(name = "instance")
    public Integer instance;
    /**
     * online
     */
    @JSONField(name = "online")
    public Integer online;
    /**
     * offline
     */
    @JSONField(name = "offline")
    public Integer offline;
    /**
     * hostCount
     */
    @JSONField(name = "hostCount")
    public Integer hostCount;
    /**
     * dataStoreCount
     */
    @JSONField(name = "dataStoreCount")
    public Integer dataStoreCount;
    /**
     * templateCount
     */
    @JSONField(name = "templateCount")
    public Integer templateCount;
    /**
     * clusterCount
     */
    @JSONField(name = "clusterCount")
    public Integer clusterCount;
    /**
     * imageCount
     */
    @JSONField(name = "imageCount")
    public Object imageCount;
    /**
     * cpuCount
     */
    @JSONField(name = "cpuCount")
    public Integer cpuCount;
    /**
     * monCount
     */
    @JSONField(name = "monCount")
    public Object monCount;
    /**
     * osdCount
     */
    @JSONField(name = "osdCount")
    public Object osdCount;
    /**
     * mdsCount
     */
    @JSONField(name = "mdsCount")
    public Object mdsCount;
    /**
     * cpuTotal
     */
    @JSONField(name = "cpuTotal")
    public Integer cpuTotal;
    /**
     * cpuUsed
     */
    @JSONField(name = "cpuUsed")
    public Object cpuUsed;
    /**
     * cpuUnused
     */
    @JSONField(name = "cpuUnused")
    public Object cpuUnused;
    /**
     * memTotal
     */
    @JSONField(name = "memTotal")
    public Double memTotal;
    /**
     * memUsed
     */
    @JSONField(name = "memUsed")
    public Object memUsed;
    /**
     * memUnused
     */
    @JSONField(name = "memUnused")
    public Object memUnused;
    /**
     * diskTotal
     */
    @JSONField(name = "diskTotal")
    public Object diskTotal;
    /**
     * diskUsed
     */
    @JSONField(name = "diskUsed")
    public Object diskUsed;
    /**
     * diskUnused
     */
    @JSONField(name = "diskUnused")
    public Object diskUnused;
    /**
     * tenantCount
     */
    @JSONField(name = "tenantCount")
    public Object tenantCount;
    /**
     * networkCount
     */
    @JSONField(name = "networkCount")
    public Object networkCount;
    /**
     * vsCount
     */
    @JSONField(name = "vsCount")
    public Object vsCount;
    /**
     * poolCount
     */
    @JSONField(name = "poolCount")
    public Object poolCount;
    /**
     * nodeCount
     */
    @JSONField(name = "nodeCount")
    public Object nodeCount;
    /**
     * profileCount
     */
    @JSONField(name = "profileCount")
    public Object profileCount;
    /**
     * monitorCount
     */
    @JSONField(name = "monitorCount")
    public Object monitorCount;
    /**
     * vpcCount
     */
    @JSONField(name = "vpcCount")
    public Object vpcCount;
    /**
     * lparCount
     */
    @JSONField(name = "lparCount")
    public Object lparCount;
    /**
     * viosCount
     */
    @JSONField(name = "viosCount")
    public Object viosCount;
    /**
     * mdiskCount
     */
    @JSONField(name = "mdiskCount")
    public Object mdiskCount;
    /**
     * flashCopyCount
     */
    @JSONField(name = "flashCopyCount")
    public Object flashCopyCount;
    /**
     * fabricCount
     */
    @JSONField(name = "fabricCount")
    public Object fabricCount;
    /**
     * zoneCount
     */
    @JSONField(name = "zoneCount")
    public Object zoneCount;
    /**
     * nsCount
     */
    @JSONField(name = "nsCount")
    public Object nsCount;
    /**
     * podCount
     */
    @JSONField(name = "podCount")
    public Object podCount;
    /**
     * serviceCount
     */
    @JSONField(name = "serviceCount")
    public Object serviceCount;
    /**
     * deploymentCount
     */
    @JSONField(name = "deploymentCount")
    public Object deploymentCount;
    /**
     * aliasCount
     */
    @JSONField(name = "aliasCount")
    public Object aliasCount;
    /**
     * accessPathCount
     */
    @JSONField(name = "accessPathCount")
    public Object accessPathCount;
    /**
     * edgeClusterCount
     */
    @JSONField(name = "edgeClusterCount")
    public Object edgeClusterCount;
    /**
     * groupCount
     */
    @JSONField(name = "groupCount")
    public Object groupCount;
    /**
     * transportZoneCount
     */
    @JSONField(name = "transportZoneCount")
    public Object transportZoneCount;
    /**
     * firewallCount
     */
    @JSONField(name = "firewallCount")
    public Object firewallCount;
    /**
     * routerCount
     */
    @JSONField(name = "routerCount")
    public Object routerCount;
    /**
     * switchCount
     */
    @JSONField(name = "switchCount")
    public Object switchCount;
    /**
     * objectUserCount
     */
    @JSONField(name = "objectUserCount")
    public Object objectUserCount;
    /**
     * objectBucketCount
     */
    @JSONField(name = "objectBucketCount")
    public Object objectBucketCount;
    /**
     * objectRouterCount
     */
    @JSONField(name = "objectRouterCount")
    public Object objectRouterCount;
    /**
     * fileUserCount
     */
    @JSONField(name = "fileUserCount")
    public Object fileUserCount;
    /**
     * fileClientCount
     */
    @JSONField(name = "fileClientCount")
    public Object fileClientCount;
    /**
     * snapshotCount
     */
    @JSONField(name = "snapshotCount")
    public Object snapshotCount;
    /**
     * fileSystemCount
     */
    @JSONField(name = "fileSystemCount")
    public Object fileSystemCount;
    /**
     * logicPortCount
     */
    @JSONField(name = "logicPortCount")
    public Object logicPortCount;
    /**
     * vasCount
     */
    @JSONField(name = "vasCount")
    public Object vasCount;
    /**
     * dbCount
     */
    @JSONField(name = "dbCount")
    public Object dbCount;
    /**
     * appCount
     */
    @JSONField(name = "appCount")
    public Object appCount;
    /**
     * sessionCount
     */
    @JSONField(name = "sessionCount")
    public Object sessionCount;
    /**
     * desktopPools
     */
    @JSONField(name = "desktopPools")
    public Object desktopPools;
    /**
     * farms
     */
    @JSONField(name = "farms")
    public Object farms;
    /**
     * sessions
     */
    @JSONField(name = "sessions")
    public Object sessions;
    /**
     * users
     */
    @JSONField(name = "users")
    public Object users;
    /**
     * vcenters
     */
    @JSONField(name = "vcenters")
    public Object vcenters;
    /**
     * vendorGroupIds
     */
    @JSONField(name = "vendorGroupIds")
    public String vendorGroupIds;
    /**
     * priority
     */
    @JSONField(name = "priority")
    public Integer priority;

    /**
     * @return
     * @see CmpAuthentication
     */
    public CmpAuthentication cmpAuthentication() {
        return JSONUtil.getT(authentication, new TypeReference<CmpAuthentication>() {
        });
    }
}

